地图显示概述

最后更新时间:2019年7月5日

功能介绍

功能描述

地图显示是GIS应用中最基础的功能,基本上所有的GIS功能都是以地图为基础,或以地图为媒介来展示功能的。MapGIS Mobile采用高性能地图渲染引擎,充分利用GPU的加速能力,结合各种调度机制和缓存策略,使得地图能够快速浏览展示。

应用场景

全面支持MapGIS地图显示(二维、三维),包括移动端离线地图、IGServer在线地图服务。这里介绍常见的MapGIS二维地图显示,包括离、在线的矢量地图文档、瓦片地图的显示。 MapGIS地图显示功能在移动GIS中非常关键,尤其是离线地图的支持,提供离线地图与在线地图的同步机制。地图显示是GIS开发的基础,借助于MapGIS平台进行地图显示,为用户提供了方便快捷的移动地图显示方式。

支持OGC地图服务的显示,包括WMTS、WMS类型的地图服务,基于通用的OGC标准,支持MapGIS IGServer发布的OGC服务,也可支持其他GIS服务器中发布的服务。OGC服务由于其通用性、易用性越来越受欢迎,数据可以得以广泛利用和分享。

支持对第三方地图服务的显示,比如天地图、Google地图、百度地图、高德地图、OSM地图等其他的地图服务,可提供给人们更多的选择。 第三方地图服务在移动GIS中扮演着举足轻重的作用。比如:在国内使用地图时,使用天地图、百度地图显示的地标、道路等信息显示的更加详细,当您在国外旅游时,使用Google地图等地图服务显示的信息会更加详细。

除此之外,还支持自定义地图服务扩展,可在地图视图中加载自定义切片规则的地图数据,可对接各种矢量、瓦片地图数据或服务,具备良好的扩展性。

功能介绍
1
离线矢量地图显示

开发者可通过该功能,实现移动端加载离线矢量地图。移动端离线矢量地图,须通过移动转换工具将桌面端组织制作的地图文档转换为移动端离线数据包,并拷贝到移动设备才能使用。

2
离线瓦片地图显示

开发者可通过该功能,实现移动端加载离线瓦片地图。瓦片地图是指将一定范围内的地图按照一定的尺寸和格式,按缩放级别或者比例尺,切成若干行和列的正方形栅格图片,对切片后的正方形栅格图片被形象的称为瓦片(Tile)。离线瓦片地图加载,须将裁剪后的瓦片数据拷贝到移动端设备。

3
在线矢量地图显示

开发者可通过该功能,实现移动端加载在线矢量地图。移动端在线矢量地图加载,须提供可用的在线矢量地图服务,可通过MapGIS IGServer发布矢量地图服务或OGC服务。

4
在线瓦片地图显示

开发者可通过该功能,实现移动端加载在线瓦片地图。瓦片地图是指将一定范围内的地图按照一定的尺寸和格式,按缩放级别或者比例尺,切成若干行和列的正方形栅格图片,对切片后的正方形栅格图片被形象的称为瓦片(Tile)。移动端在线瓦片地图加载,须提供可用的在线瓦片地图服务,可通过MapGIS IGServer发布瓦片地图服务或OGC服务。

5
在线WMS显示

开发者可通过该功能,实现移动端加载OGC服务的WMS地图,须提供可用的WMS服务,可通过MapGIS IGServer发布WMS或者调用其他第三方的WMS服务。

6
在线WMTS显示

开发者可通过该功能,实现移动端加载OGC服务的WMTS地图,须提供可用的WMTS服务,可通过MapGIS IGServer发布WMTS或者调用其他第三方的WMTS服务。

7
第三方地图显示

开发者可通过该功能,实现移动端加载第三方地图,如天地图、百度地图、高德地图、OSM地图、Google地图等,须确保网络能正常使用且第三方地图服务可用。

8
自定义地图服务显示

开发者可通过该功能,实现移动端加载自定义的地图,即自定义切片规则的地图数据。

9
3D灰度模型

开发者可通过该功能,实现移动端加载3D灰度模型,其矢量数据必须通过桌面工具进行3D灰度模型的预处理设置。

基本原理

移动端地图显示与MapGIS桌面软件地图显示设计一脉相承,均通过地图文档—地图—图层来组织地图,支持离线模式与在线模式的地图加载。其显示的基本原理也与桌面端、Web端类似,采用一个地图视图控件作为地图容器装载地图,调用地图容器(MGSMapView)的相关接口即可加载移动二维地图。

地图显示逻辑结构.png

功能接口

MapGIS Mobile for iOS SDK提供了多个接口来实现地图加载功能,都由MGSMapView类提供,例如loadFromFile、loadFromDocument、setMap等方法。核心接口如下:

方法 接口 适用类型
加载地图文档 loadFromFile / loadFromFileAsync 离线、在线地图
加载地图文档对应索引的地图 loadFromDocument / loadFromDocumentAsync 离线、在线地图
基于ServerLayer实例化Map setMap / setMapAsync 离线瓦片、在线地图

可以观察到,每一类方法都包括同步和异步的接口,它们具有不同的应用场景:

说明:除直接调用API接口中的异步方法外,也可以单独开一个子线程使用同步方法加载地图。